package com.pond.pond.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.pond.common.core.annotation.Excel;
import com.pond.common.core.web.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.Date;
import java.util.List;

/**
 * 钓技文章对象 fishing_technique
 * 
 * @author pond
 * @date 2024-01-15
 */
@Setter
@Getter
public class FishingTechnique extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 文章ID */
    private Long id;

    /** 文章标题 */
    @Excel(name = "文章标题")
    private String title;

    /** 文章副标题 */
    @Excel(name = "文章副标题")
    private String subtitle;

    /** 文章内容 */
    private String content;

    /** 封面图片URL */
    @Excel(name = "封面图片URL")
    private String imageUrl;

    /** 分类：基础入门、钓法技巧、饵料配方、装备选择、钓点选择 */
    @Excel(name = "分类")
    private String category;

    /** 难度：初级、中级、高级 */
    @Excel(name = "难度")
    private String difficulty;

    /** 标签，逗号分隔 */
    @Excel(name = "标签")
    private String tags;

    /** 作者 */
    @Excel(name = "作者")
    private String author;

    /** 预计阅读时间（分钟） */
    @Excel(name = "预计阅读时间")
    private Integer estimatedReadTime;

    /** 阅读量 */
    @Excel(name = "阅读量")
    private Integer readCount;

    /** 点赞数 */
    @Excel(name = "点赞数")
    private Integer likeCount;

    /** 收藏数 */
    @Excel(name = "收藏数")
    private Integer favoriteCount;

    /** 评论数 */
    @Excel(name = "评论数")
    private Integer commentCount;

    /** 状态：0-禁用，1-启用 */
    @Excel(name = "状态")
    private String status;

    /** 排序字段 */
    @Excel(name = "排序字段")
    private Integer sortOrder;

    /** 是否已点赞（查询时使用） */
    private Boolean isLiked;

    /** 是否已收藏（查询时使用） */
    private Boolean isFavorited;

    /** 标签列表（查询时使用） */
    private List<String> tagList;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("subtitle", getSubtitle())
            .append("content", getContent())
            .append("imageUrl", getImageUrl())
            .append("category", getCategory())
            .append("difficulty", getDifficulty())
            .append("tags", getTags())
            .append("author", getAuthor())
            .append("estimatedReadTime", getEstimatedReadTime())
            .append("readCount", getReadCount())
            .append("likeCount", getLikeCount())
            .append("favoriteCount", getFavoriteCount())
            .append("commentCount", getCommentCount())
            .append("status", getStatus())
            .append("sortOrder", getSortOrder())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}